//#define _CRT_SECURE_NO_WARNINGS
//struct ListNode* insertionSortList(struct ListNode* head) {
//    struct ListNode* tail = head->next;
//    struct ListNode* phead = head;
//
//    struct ListNode* insert = NULL;
//    while (tail) {
//        if (tail->val >= phead->val) {
//            phead = phead->next;
//            tail = tail->next;
//        }
//        else {
//            insert = tail;
//            phead->next = tail->next;
//            tail = tail->next;
//            struct ListNode* newhead = head;
//            if (insert->val < newhead->val) {
//                insert->next = newhead;
//                newhead = insert;
//                head = insert;
//            }
//            struct ListNode* next = newhead->next;
//            while (next) {
//                if (insert->val < next->val) {
//                    newhead->next = insert;
//                    insert->next = next;
//                    break;
//                }
//                else {
//                    newhead = newhead->next;
//                    next = next->next;
//                }
//
//            }
//
//        }
//    }
//    return head;
//}